package com.zcxx.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
 * @Author WangShuai
 * @Date 2025/3/7 22:09
 * @Version 1.0
 * @Description $
 */
@Configuration  // 标记该类为配置类，允许通过 @Bean 注解创建 Spring 容器管理的 Bean
@EnableSwagger2  // 启用 Swagger2 的 API 文档和 UI 功能
public class SwaggerConfig {

    @Bean  // 声明一个名为 api 的 Docket 类型 Bean，用于构建 API 文档
    public Docket api() {
        return new Docket(DocumentationType.SWAGGER_2)  // 创建 Docket 对象并指定使用 Swagger2 文档类型
                .select()  // 开始选择需要生成文档的 API 接口
                .apis(RequestHandlerSelectors.basePackage("com.zcxx.controller"))  // 指定扫描 com.zcxx.controller 包下的所有接口
                .paths(PathSelectors.any())  // 匹配所有路径的 API 接口
                .build()  // 构建 API 选择器
                .apiInfo(new ApiInfoBuilder()  // 构建 API 文档信息
                        .title("MyBatis-Plus API 文档")  // 设置文档标题
                        .description("MyBatis-Plus 示例项目的 API 文档")  // 设置文档描述
                        .version("1.0")  // 设置文档版本
                        .build());  // 构建完成 API 文档信息
    }
}
